package com.ccsoft.nio;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

// 演示使用 MappedByteBuffer 在内存中修改文件内容
public class Ch07MappedByteBuffer {
    public static void main(String[] args) throws IOException {
        RandomAccessFile accessFile = new RandomAccessFile("d:\\filechannel.txt","rw");
        FileChannel channel = accessFile.getChannel();
        // 参数一：指定对文件的权限 - 读写模式
        // 参数二：可以直接修改的起始位置
        // 参数三：映射到内存的大小，即将文件的多少个字节映射到内存中，这里是长度，单位是字节
        MappedByteBuffer mappedByteBuffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, 10);
        mappedByteBuffer.put(0,(byte)'H');
        mappedByteBuffer.put(7,(byte)'7');

        accessFile.close();
    }
}
